package com.ml.loan.common.utils;

import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ml.loan.sys.model.SysDict;
import com.ml.loan.sys.service.SysDictService;

import java.util.List;

/**
 * 字典工具类
 *
 * @author Mickey
 * @date 2022/8/14 16:18
 */
public class DictUtils {

    /**
     * 静态内部类，延迟加载，懒汉式，线程安全的单例模式
     */
    private static final class Static {
        private static SysDictService dictService = SpringUtil.getBean(SysDictService.class);
    }

    /**
     * 根据字典类型获取字典列表
     *
     * @param dictType
     * @return
     */
    public static List<SysDict> getDictList(String dictType) {
        return Static.dictService.getDictList(dictType);
    }

    /**
     * 根据字典类型获取字典列表，前端js可以直接调用
     * js示例：${dict.getDictJson('sys_normal_disable')}
     * @param dictType
     * @return
     */
    public static JSONArray getDictJson(String dictType){
        return JSONArray.parseArray(JSON.toJSONString(getDictList(dictType)));
    }

    /**
     * 根据字典值获取字典项名称
     *
     * @param dictType     字典类型
     * @param dictValue    字典项值
     * @param defaultValue 默认值
     * @return
     */
    public static String getDictName(String dictType, String dictValue, String defaultValue) {
        return Static.dictService.getDictName(dictType, dictValue, defaultValue);
    }

    /**
     * 根据字典名称获取字典项值
     *
     * @param dictType
     * @param dictName
     * @param defaultValue
     * @return
     */
    public static String getDictValue(String dictType, String dictName, String defaultValue) {
        return Static.dictService.getDictValue(dictType, dictName, defaultValue);
    }

}
